﻿#include<iostream>
using namespace std;

/*
// 继承
// 学生和教师都有很多作为人的共同点,因此人作为父类
class Person
{
public:
	void print()
	{
		cout << "name:" << _name << endl;
		cout << "age:" << _age << endl;
	}

	int _hair;

protected:
	int _age = 18;
	string _name = "Person";

private:
	int birth = 2004;
};

// Student和Teache继承了父类Person之后，父类的所有成员变量和成员函数都会成为子类的一部分
// 这里体现出了Student和Teacher复用了Person的成员
// 调试可以看到子类对父类成员变量的复用
// 调用父类的函数，可以体现子类对父类成员函数的复用
class Student : public Person
{
public:
	Student()
	{
		// 父类的成员只要不是private权限，子类都能够访问（不管是什么权限的继承）
		_hair = 10;
	}

protected:
	int _id;//学号

};

class Teacher : public Person
{
protected:
	int _jobid; // 工号
};


int main()
{
	Student s;
	Teacher t;

	//s.print();
	//t.print();
	//name:Person
	//age : 18
	//name : Person
	//age : 18'

	return 0;
}*/

// 实例演示三种继承关系下基类成员的各类型成员访问关系的变化  
class Person
{
public:
	void Print()
	{
		cout << _name << endl;
	}

protected:
	string _name; // 姓名

private:
	int _age; // 年龄
};

//class Student : protected Person
//class Student : private Person
class Student : public Person
{
public:
	Student()
	{
		_name = "改动"; // 无论什么权限的继承，protected权限的父类成员变量都能在子类被访问
	}

protected:
	int _stunum; // 学号
};

int main()
{
	Student s;

	//s.Print();
}